package Leetcode;
/*
给定两个 二进制 字符串 a 和 b ，请计算它们的和，并以二进制字符串的形式输出。
输入为 非空 字符串且只包含数字 1 和 0。
示例:
输入: a = "11", b = "10"
输出: "101"
 */

public class question005 {
    public static void main(String[] args) {
        Solution005 solution005 = new Solution005();
        System.out.println(solution005.addBinary("1010001000101010", "10101010101011"));

    }
}
class Solution005 {
    public String addBinary(String a, String b) {
        //intager.parseInt(String,int)String为需要转换进制的字符串，int为String的进制类型；返回int类型；
        long number_a = Long.parseLong(a, 2);//当字符串变量s为一串十进制数字序列时，可以利用Integer.parseInt(s)函数将其转换为十进制int型整数，
        long number_b = Long.parseLong(b, 2);//利用Long.parseLong(s)函数将其转换为十进制long型整数。
        long sum = number_a + number_b;
        //API函数Integer.toBinaryString(int)十进制转二进制
        String result = Long.toBinaryString(sum);
        return result;

    }
}
/*
class Solution {
    public String addBinary(String a, String b) {
        StringBuilder sb = new StringBuilder();
        int i = a.length() - 1,j = b.length() - 1,c = 0;
        while(i >= 0 || j >= 0 || c != 0){
            int ii = i >= 0 ? a.charAt(i--) - '0' : 0;
            int jj = j >= 0 ? b.charAt(j--) - '0' : 0;
            c = ii + jj + c;
            sb.append(c%2);
            c /= 2;
        }
        return sb.reverse().toString();
    }
}
 */
